<?php

namespace App\Http\Controllers\Agent;
use Illuminate\Support\Facades\DB;
use App\Http\Controllers\Controller;
use Symfony\Component\HttpFoundation\Request;

const SECRET_KEY = '6A61750BB30490604B7DF6FD8DA9FA8E'; // 密码加密密钥
const PWD_VERSION = '2'; //密码版本号

class CommonController extends Controller {

	#api接口请求必要数据
	protected $ClientSource='Sandbox';
	protected $is_exper=0;
	protected $ClientSystem='20160303';
	protected $Version=3.1;

	public function __construct(Request $request){

		$this->checkAgentIsExit();

	}

	/**
	 * 检测代理账号是否存在
	 */
	public function checkAgentIsExit(){
		session_start();
		if(empty($_SESSION['agent_id'])||!isset($_SESSION['agent_id'])){
			header( "Location:".route('login'));
			exit;
		}
	}

	/*
     * curl走接口获取数据 get方式
     * array:要传递的数组
     * */
	protected function curl_get($url){

		$testurl = $url;
		$ch = curl_init();
		curl_setopt($ch, CURLOPT_URL, $testurl);
		//参数为1表示传输数据，为0表示直接输出显示。
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
		//参数为0表示不带头文件，为1表示带头文件
		curl_setopt($ch, CURLOPT_HEADER,0);
		$output = curl_exec($ch);
		curl_close($ch);
		return $output;
	}

	/*
     * curl走接口获取数据 post方式
     * array:要传递的数组
     * */
	protected function curl_post($url,$array){

		$curl = curl_init();
		//设置提交的url
		curl_setopt($curl, CURLOPT_URL, $url);
		//设置头文件的信息作为数据流输出
		curl_setopt($curl, CURLOPT_HEADER, 0);
		//设置获取的信息以文件流的形式返回，而不是直接输出。
		curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
		//设置post方式提交
		curl_setopt($curl, CURLOPT_POST, 1);
		//设置post数据
		$post_data = $array;
		curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
		//执行命令
		$data = curl_exec($curl);
		//关闭URL请求
		curl_close($curl);
		//获得数据并返回
		return $data;
	}

	/*
     * api post接口查询
     * */
	protected function api_post($data){
		#传参必须按顺序
		$arr_data['ClientSource']=$this->ClientSource;
		$arr_data['ClientSystem']=$this->ClientSystem;
		$str='';
		foreach($data as $k=>$v){
			$arr_data[$k]=$v;
		}
		foreach($arr_data as $k=>$v){
			$str.=$k.'='.$v.'&';
		}
		$str=substr($str,0,strlen($str)-1);
		$arr_data['sign']=md5($str);
		$res=$this->curl_post(TEST_URL,$arr_data); #测试
		//$res=$this->curl_post(OFFICIAL_URL,$arr_data); #正式
		return json_decode($res,true);

	}

	/*
     * 通过node_id获取用户最后一次登录的ticket
     * */
	protected function get_ticket($node_id){
		$sessionInfo=DB::table('tsso_session')
			->where('node_id','=',$node_id)
			->select('ticket')
			->orderBy('sid','desc')
			->first();
		return $sessionInfo->ticket;
	}



}